草庐IT

c++ - std::transform 的泛化

全部标签

c++ - 了解使用 std::condition_variable 的示例

有一个使用condition_variable的例子来自cppreference.com:#include#include#include#include#include#includeintmain(){std::queueproduced_nums;std::mutexm;std::condition_variablecond_var;booldone=false;boolnotified=false;std::threadproducer([&](){for(inti=0;ilock(m);std::coutlock(m);notified=true;done=true;cond

c# - C# 或 VB.NET 中的 std::bind 等价物

我正在将“同步”代码(即使用Windows事件等待其他线程完成某事)重构为“异步”代码(使用委托(delegate)来实现回调机制)。在同步代码中,我有时会有等待结束后需要使用的局部变量。当这样的代码变为异步时,这些局部变量就会丢失(回调处理程序无法访问它们)。我可以将它们存储为类属性,但感觉很浪费。在C++中,我使用std::bind来解决这个问题。我只是将与回调处理程序所需的局部变量一样多的参数添加到回调处理程序中,并在调用异步方法时绑定(bind)它们。例如,假设异步方法回调接收类型为CallbackParam的对象,调用者使用类型为LocalA和LocalB的两个局部变量。vo

C++:在 C 或 C++ 中以普通文本模式(非二进制)写入 vector 文件以输出最快

编写std::vector的最快方法是什么?(或与此相关的任何连续容器)到不是二进制文件(即文本模式)的文件?在我的例子中,速度很重要,vector会不断生成并写入文件。在二进制模式下,自std::vector以来相当简单在内存中是连续的。请注意,我不想依赖Boost序列化。(尽管如果这是最优雅的方式,我可能会被迫这样做……)。另外我需要一系列字符来分隔元素(即空格)这就是我目前正在做的事情(是一个例子),但这是非常通用的,即使我写了一个运算符对于vector.是否有此代码的更优化版本,或者我只剩下这个?std::ofstreamoutput(...);...templatewrite

c++ - QMap 和 std::unique_ptr

我试图防止裸指针,防止内存泄漏等。我还想将int映射到INuiSensor*.由于我也在使用Qt,所以我尝试使用QMap>来执行此操作,但QMap的源代码使这变得不可能:templateQ_INLINE_TEMPLATEtypenameQMap::iteratorQMap::insert(constKey&akey,constT&avalue){detach();Node*n=d->root();Node*y=d->end();Node*last=0;boolleft=true;while(n){y=n;if(!qMapLessThanKey(n->key,akey)){last=n;

c++ - 当数组大小大于 1,000,000 时,Cuda 未给出正确答案

我已经编写了一个简单的求和代码,在我将数组大小增加到100万之前它似乎工作得很好,这可能是问题所在。#defineBLOCK_SIZE128#defineARRAY_SIZE10000cudaError_taddWithCuda(constlong*input,long*output,inttotalBlocks,size_tsize);__global__voidsumKernel(constlong*input,long*output){inttid=threadIdx.x;intbid=blockDim.x*blockIdx.x;__shared__longdata[BLOCK_

c++ - 如果新大小小于或等于旧大小,标准是否保证 std::string::resize 不会重新分配内存?

我需要经常将字符串设为空,然后在其中添加一些字符。std::string::clear()可能重新分配std::string::resize(0)是否重新分配?标准的话并没有引起任何注意。 最佳答案 我认为最好的答案是http://en.cppreference.com/w/cpp/string/basic_string/clear的“注释”部分.Unlikeforstd::vector::clear,theC++standarddoesnotexplicitlyrequirethatcapacityisunchangedbythi

c++ - 声音分析库?

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭4年前。Improvethisquestion我有兴趣了解使用着色器的音频可视化。我想制作一个可以从音频进行可视化的应用程序。我正在寻找一个可以为我提供可能对可视化有用的音频数据的库。有人知道任何可以给我这种信息的c/c++库吗?(可能是波峰和波谷,或频率等)。谢谢 最佳答案 使用FMOD库TheFMODLibraryLink用这个,看看this可

c++ - 如何将 C++ 文件链接到 C 程序?

我目前正在尝试将一个大型C++程序链接到一个C“包装器”,以允许与另一种语言的程序集成,该语言的编译器理解C而不是C++(准确地说是HaskellGHC。)但是我尝试这样做,无论是使用GHC还是GCC,都会遇到奇怪的问题。为了简洁地模拟这种情况,假设我在C中有一个主程序文件:cmain.c#include"header.h"#includeintmain(){printf("%d\n",cppfun(12));return0;}以及在.cpp文件中定义的辅助函数:cpp模块.cpp#include"header.h"#include"further.h"classfoobar{publ

c++ - 来自 std::string 的 std::istringstream 而无需复制

我一直在用这个:ifstreamin("file.txt")stringline;getline(in,line);istringstreamiss(line);...进行一些简单的解析。我想避免不必要的复制以提高性能,所以我尝试了:ifstreamin("huge_line.txt");stringline;getline(in,line);istringstreamss;ss.rdbuf()->pubsetbuf(const_cast(line.c_str()),line.size());...它似乎可以完成这项工作(即显着提高性能)。我的问题是,给定const_cast这样安全吗

c++ - Python C API - 创建关键字

我在尝试从我的C++代码调用Python函数时遇到了麻烦。我正在尝试使用以下参数调用Django函数call_command:call_command('test',stdout=content)参见here为什么。这将运行没有stdout=content参数的命令:PyObject_CallFunctionObjArgs(executeFunc,PyString_FromString("test"),NULL)我这辈子都想不出如何创建这个关键字。PyDict_New();PyDict_SetItemString(...);给我一​​个'stdout'='content'字符串,而不是